(label Z (lambda (f) ((lambda (x) (f (lambda (v) ((x x) v)))) (lambda (x) (f (lambda (v) ((x x) v)))))))
(label fib. (lambda (g) (lambda (n) (cond ((eq n 0) 0) ((eq n 1) 1) ('t (+ (g (- n 1)) (g (- n 2))))))))
(label fib (Z fib.))

(define firstatom (label f (lambda (x) (cond ((atom x) x) ('t (f (car x)))))))

(define is_even. (lambda (g x) (cond ((eq x 0) 't) ('t (g (- x 1))))))
(define is_odd (label g (lambda (x) (cond ((eq x 0) ()) ('t (is_even. g (- x 1)))))))
(define is_even (lambda (x) (is_odd (+ x 1))))